package lesson01;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class Demo0111 {
    public static void main(String[] args) throws IOException {
        //删除名字或者内容中包含指定关键字的文件
        //1,获取一个文件夹
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入文件夹绝对路径");
        String s=scanner.nextLine();
        if(s==null||s.isEmpty()){
            System.out.println("文件夹路径不符合规范");
            return;
        }
        File file=new File(s);
        if(!file.exists()){
            System.out.println("文件夹不存在");
            return;
        }
        if(!file.isDirectory()){
            System.out.println("不是文件夹");
        }
        //2，获取关键字
        System.out.println("输入关键字：");
        String keyWord=scanner.nextLine();
        if(s==null||s.isEmpty()){
            System.out.println("关键字为空");
            return;
        }
        //递归
        scan(file,keyWord);

    }
    public static void  scan(File file,String keyWord) throws IOException {
        File[] files=file.listFiles();
        //文件为空直接返回
        if(files.length==0) return;

        for(File file1:files){
            //判断是否为目录
            if(file1.isDirectory()){
                scan(file1,keyWord);
            }
            //对文件进行判断
            else {
                if(checkFile(file1,keyWord)){
                    System.out.println("找到文件"+file1.getCanonicalPath()+"包含关键字，是否删除Y/N：");
                    Scanner scanner=new Scanner(System.in);
                    String det=scanner.next();
                    if(det.equalsIgnoreCase("Y")) {
                        file1.delete();
                        System.out.println("文件"+file1.getCanonicalPath()+"删除成功");
                    }
                }
            }

        }
    }
public  static boolean checkFile(File file1,String keyWord) throws IOException {
        //判断文件名
        if(file1.getName().indexOf(keyWord)>-1) return true;
        //判断文件内容
        try(InputStream inputStream=new FileInputStream(file1)) {
            StringBuilder stringBuilder=new StringBuilder();
            Scanner scanner=new Scanner(inputStream);
            while (true){
                if(!scanner.hasNextLine()) break;
                stringBuilder.append(scanner.nextLine());
            }
           if( stringBuilder.indexOf(keyWord)>-1) return true;
        }
        return  false;
}

}
